/*
 * ArchivoBloques.h
 *
 *  Created on: 22/04/2013
 *      Author: pancho
 */

#ifndef ARCHIVOBLOQUES_H_
#define ARCHIVOBLOQUES_H_

#include <fstream>

using namespace std;

#define tamanioMetadata sizeof(unsigned char) + sizeof(unsigned int) + sizeof(unsigned short int)

class ArchivoBloques {
private:
	fstream archivo;
	fstream archBitmap;
	unsigned int tamanioBitmap;
	unsigned char codigoTipo;
	unsigned int tamanioBloque;
	unsigned short int cantidadBloques;
	char* bitmap;
	char* buffer;
	int Potencia(int numero, int potencia);

	void MarcarBloqueOcuapdo(unsigned int numeroBloque);
public:
	ArchivoBloques(string path, string tipo, unsigned int tamBloque); 	//crear
	ArchivoBloques(string path);
	string getTipo();
	unsigned short int getCantidadBloques();
	int AgregarBloque(char *info, unsigned int tam);		//devuelve el numero de bloque
	char* RecuperarBloque(unsigned int numeroBloque);
	bool ModificarBloque(unsigned int numeroBloque, char *info, unsigned int tam);
	bool LiberarBloque(unsigned int numeroBloque);
	virtual ~ArchivoBloques();
};

#endif /* ARCHIVOBLOQUES_H_ */
